﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
//using System.Threading.Tasks;
using System.Windows.Forms;
using Grafica.ClienteWS;

namespace Grafica
{
    public partial class ControlBoletas : Form
    {
        private static ControlBoletas InstanciaFormulario = null;

        public ControlBoletas()
        {
            InitializeComponent();
            CargarBoletas();
        }

        public static ControlBoletas Instance()
        {
            if (InstanciaFormulario == null)
            {
                InstanciaFormulario = new ControlBoletas();
            }
            return InstanciaFormulario;
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);

            InstanciaFormulario = null;
        }
        
        private void btnSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void lblFecInicial_Click(object sender, EventArgs e)
        {

        }

        private void ControlBoletas_Load(object sender, EventArgs e)
        {

        }

        private void CargarBoletas()
        {
            EtaxiSoapClient ws = new EtaxiSoapClient();
            DataBoleta[] boletas = ws.ListarBoletas();

            if (boletas.Length > 0)
            {
                foreach (DataBoleta boleta in boletas)
                {
                    this.dataGridViewBoletas.Rows.Add(boleta.Id, boleta.FecJornal, boleta.Importe, boleta.CedulaEmpleado, boleta.Estado);
                }
            }
            else
            {
                MessageBox.Show("Aún no se han ingresado boletas", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
            }
        }

        private void buttonOpen_Click(object sender, EventArgs e)
        {
            string estado = dataGridViewBoletas.CurrentRow.Cells["Estado"].Value.ToString();
            if (estado == "cerrado")
            {
                MessageBox.Show("El estado de la boleta ya es cerrado", "No se ha modificado el estado", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
            }
            else
            {
                EtaxiSoapClient ws = new EtaxiSoapClient();
                int idBoleta = (int)dataGridViewBoletas.CurrentRow.Cells["IdBoleta"].Value;
                ws.ModificarEstadoBoleta(idBoleta, "cerrado");
                dataGridViewBoletas.Rows.Clear();
                CargarBoletas();
                MessageBox.Show("Se ha cambiado el estado de la boleta", "Boleta modificada correctamente", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
            }
            
        }

        private void buttonClose_Click(object sender, EventArgs e)
        {
            string estado = dataGridViewBoletas.CurrentRow.Cells["Estado"].Value.ToString();
            if (estado == "abierto")
            {
                MessageBox.Show("El estado de la boleta ya es abierto", "No se ha modificado el estado", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
            }
            else
            {
                EtaxiSoapClient ws = new EtaxiSoapClient();
                int idBoleta = (int)dataGridViewBoletas.CurrentRow.Cells["IdBoleta"].Value;
                ws.ModificarEstadoBoleta(idBoleta, "abierto");
                dataGridViewBoletas.Rows.Clear();
                CargarBoletas();
                MessageBox.Show("Se ha cambiado el estado de la boleta", "Boleta modificada correctamente", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
            }
        }

        private void btnConsulta_Click(object sender, EventArgs e)
        {
            DateTime desde = dateTimePicker1.Value;
            DateTime hasta = dateTimePicker2.Value;
            
            EtaxiSoapClient ws = new EtaxiSoapClient();
            DataBoleta[] boletas =  ws.ListarBoletasDesdeHasta(desde, hasta);
            dataGridViewBoletas.Rows.Clear();

            foreach (DataBoleta boleta in boletas)
            {
                this.dataGridViewBoletas.Rows.Add(boleta.Id, boleta.FecJornal, boleta.Importe, boleta.CedulaEmpleado, boleta.Estado);
            }
        }

        private void buttonIr_Click(object sender, EventArgs e)
        {
            if (radioButton1.Checked)
            {
                int idBoleta = (int)dataGridViewBoletas.CurrentRow.Cells["IdBoleta"].Value;
                EtaxiSoapClient ws = new EtaxiSoapClient();
                DataBoleta[] boletas = ws.ListarBoletas();


                DataBoleta boletaAModificar = new DataBoleta();
                foreach(DataBoleta boleta in boletas)
                {
                    if (boleta.Id == idBoleta)
                    {
                        boletaAModificar = boleta;
                        break;
                    }
                }

                Boleta BoletaSingleton = Boleta.Instance(true, boletaAModificar);
                BoletaSingleton.Show();
                Dispose();
            }
        }
    
    
    }

}
